A distributed storage system allows a cluster of host computers to aggregate local storage devices, which may be located in or attached to each host computer, to create a single and shared pool of storage. This pool of storage is accessible by all host computers in the cluster, including any virtualized instances running on the host computers, such as virtual machines. Because the shared local storage devices that make up the pool of storage may have different performance characteristics, such as capacity, input/output per second (IOPS) capabilities, etc.), usage of such shared local storage devices to store data may be distributed among the virtual machines based on the needs of each given virtual machine.
This approach provides enterprises with cost-effective performance. For instance, distributed storage using pooled local storage devices is inexpensive, highly scalable, and relatively simple to manage. Because such distributed storage can use commodity storage devices, e.g., disk drives, in the cluster, enterprises do not need to invest in additional storage infrastructure. However, one issue that arises with this approach relates to contention between multiple clients, such as virtual machines on different host computers, accessing the shared storage resources. In particular, reduced overall performance and higher latency occur when multiple clients and/or other software processes need to simultaneously access the same local storage devices.
Throughout the description, similar reference numbers may be used to identify similar elements.